<!DOCTYPE html>
<!--
    Copyright (c) 2019 Vinnie Falco (vinnie.falco@gmail.com)

    Distributed under the Boost Software License, Version 1.0. (See accompanying
    file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    Official repository: https://github.com/boostorg/json
-->
<html>
<head>
<font face="arial"/>
</head>
<body>
<h1>Boost.JSON Benchmarks</h1>
<div id="benchmarks">
</div>
<br>
<textarea id="data" cols="60" rows="20" overflow="hidden" onkeyup="autosize(this)">

Parse apache_builds.json,clang x64/sse2,boost (pool),740
Parse apache_builds.json,clang x64/sse2,boost,290
Parse apache_builds.json,clang x64/sse2,rapidjson (pool),564
Parse apache_builds.json,clang x64/sse2,rapidjson,353
Parse apache_builds.json,clang x64/sse2,nlohmann,130
Parse canada.json,clang x64/sse2,boost (pool),642
Parse canada.json,clang x64/sse2,boost,385
Parse canada.json,clang x64/sse2,rapidjson (pool),506
Parse canada.json,clang x64/sse2,rapidjson,303
Parse canada.json,clang x64/sse2,nlohmann,55
Parse citm_catalog.json,clang x64/sse2,boost (pool),1120
Parse citm_catalog.json,clang x64/sse2,boost,476
Parse citm_catalog.json,clang x64/sse2,rapidjson (pool),1200
Parse citm_catalog.json,clang x64/sse2,rapidjson,698
Parse citm_catalog.json,clang x64/sse2,nlohmann,140
Parse github_events.json,clang x64/sse2,boost (pool),833
Parse github_events.json,clang x64/sse2,boost,314
Parse github_events.json,clang x64/sse2,rapidjson (pool),525
Parse github_events.json,clang x64/sse2,rapidjson,349
Parse github_events.json,clang x64/sse2,nlohmann,136
Parse gsoc-2018.json,clang x64/sse2,boost (pool),879
Parse gsoc-2018.json,clang x64/sse2,boost,595
Parse gsoc-2018.json,clang x64/sse2,rapidjson (pool),596
Parse gsoc-2018.json,clang x64/sse2,rapidjson,488
Parse gsoc-2018.json,clang x64/sse2,nlohmann,261
Parse instruments.json,clang x64/sse2,boost (pool),690
Parse instruments.json,clang x64/sse2,boost,301
Parse instruments.json,clang x64/sse2,rapidjson (pool),685
Parse instruments.json,clang x64/sse2,rapidjson,451
Parse instruments.json,clang x64/sse2,nlohmann,117
Parse marine_ik.json,clang x64/sse2,boost (pool),476
Parse marine_ik.json,clang x64/sse2,boost,314
Parse marine_ik.json,clang x64/sse2,rapidjson (pool),500
Parse marine_ik.json,clang x64/sse2,rapidjson,363
Parse marine_ik.json,clang x64/sse2,nlohmann,56
Parse mesh.json,clang x64/sse2,boost (pool),522
Parse mesh.json,clang x64/sse2,boost,560
Parse mesh.json,clang x64/sse2,rapidjson (pool),398
Parse mesh.json,clang x64/sse2,rapidjson,347
Parse mesh.json,clang x64/sse2,nlohmann,59
Parse mesh.pretty.json,clang x64/sse2,boost (pool),1033
Parse mesh.pretty.json,clang x64/sse2,boost,1195
Parse mesh.pretty.json,clang x64/sse2,rapidjson (pool),820
Parse mesh.pretty.json,clang x64/sse2,rapidjson,723
Parse mesh.pretty.json,clang x64/sse2,nlohmann,115
Parse numbers.json,clang x64/sse2,boost (pool),1105
Parse numbers.json,clang x64/sse2,boost,1042
Parse numbers.json,clang x64/sse2,rapidjson (pool),497
Parse numbers.json,clang x64/sse2,rapidjson,472
Parse numbers.json,clang x64/sse2,nlohmann,63
Parse random.json,clang x64/sse2,boost (pool),375
Parse random.json,clang x64/sse2,boost,180
Parse random.json,clang x64/sse2,rapidjson (pool),438
Parse random.json,clang x64/sse2,rapidjson,290
Parse random.json,clang x64/sse2,nlohmann,86
Parse twitter.json,clang x64/sse2,boost (pool),682
Parse twitter.json,clang x64/sse2,boost,329
Parse twitter.json,clang x64/sse2,rapidjson (pool),603
Parse twitter.json,clang x64/sse2,rapidjson,406
Parse twitter.json,clang x64/sse2,nlohmann,137
Parse twitterescaped.json,clang x64/sse2,boost (pool),567
Parse twitterescaped.json,clang x64/sse2,boost,280
Parse twitterescaped.json,clang x64/sse2,rapidjson (pool),398
Parse twitterescaped.json,clang x64/sse2,rapidjson,287
Parse twitterescaped.json,clang x64/sse2,nlohmann,120
Parse update-center.json,clang x64/sse2,boost (pool),530
Parse update-center.json,clang x64/sse2,boost,233
Parse update-center.json,clang x64/sse2,rapidjson (pool),426
Parse update-center.json,clang x64/sse2,rapidjson,277
Parse update-center.json,clang x64/sse2,nlohmann,105
Serialize apache_builds.json,clang x64/sse2,boost (pool),1659
Serialize apache_builds.json,clang x64/sse2,boost,1480
Serialize apache_builds.json,clang x64/sse2,rapidjson (pool),1431
Serialize apache_builds.json,clang x64/sse2,rapidjson,1528
Serialize apache_builds.json,clang x64/sse2,nlohmann,407
Serialize canada.json,clang x64/sse2,boost (pool),578
Serialize canada.json,clang x64/sse2,boost,561
Serialize canada.json,clang x64/sse2,rapidjson (pool),313
Serialize canada.json,clang x64/sse2,rapidjson,309
Serialize canada.json,clang x64/sse2,nlohmann,178
Serialize citm_catalog.json,clang x64/sse2,boost (pool),3039
Serialize citm_catalog.json,clang x64/sse2,boost,2882
Serialize citm_catalog.json,clang x64/sse2,rapidjson (pool),2200
Serialize citm_catalog.json,clang x64/sse2,rapidjson,2210
Serialize citm_catalog.json,clang x64/sse2,nlohmann,1151
Serialize github_events.json,clang x64/sse2,boost (pool),1529
Serialize github_events.json,clang x64/sse2,boost,1559
Serialize github_events.json,clang x64/sse2,rapidjson (pool),1500
Serialize github_events.json,clang x64/sse2,rapidjson,1680
Serialize github_events.json,clang x64/sse2,nlohmann,368
Serialize gsoc-2018.json,clang x64/sse2,boost (pool),2347
Serialize gsoc-2018.json,clang x64/sse2,boost,2243
Serialize gsoc-2018.json,clang x64/sse2,rapidjson (pool),2895
Serialize gsoc-2018.json,clang x64/sse2,rapidjson,3066
Serialize gsoc-2018.json,clang x64/sse2,nlohmann,241
Serialize instruments.json,clang x64/sse2,boost (pool),2183
Serialize instruments.json,clang x64/sse2,boost,1905
Serialize instruments.json,clang x64/sse2,rapidjson (pool),1350
Serialize instruments.json,clang x64/sse2,rapidjson,1430
Serialize instruments.json,clang x64/sse2,nlohmann,587
Serialize marine_ik.json,clang x64/sse2,boost (pool),469
Serialize marine_ik.json,clang x64/sse2,boost,454
Serialize marine_ik.json,clang x64/sse2,rapidjson (pool),452
Serialize marine_ik.json,clang x64/sse2,rapidjson,445
Serialize marine_ik.json,clang x64/sse2,nlohmann,229
Serialize mesh.json,clang x64/sse2,boost (pool),476
Serialize mesh.json,clang x64/sse2,boost,475
Serialize mesh.json,clang x64/sse2,rapidjson (pool),367
Serialize mesh.json,clang x64/sse2,rapidjson,366
Serialize mesh.json,clang x64/sse2,nlohmann,275
Serialize mesh.pretty.json,clang x64/sse2,boost (pool),1082
Serialize mesh.pretty.json,clang x64/sse2,boost,1081
Serialize mesh.pretty.json,clang x64/sse2,rapidjson (pool),840
Serialize mesh.pretty.json,clang x64/sse2,rapidjson,835
Serialize mesh.pretty.json,clang x64/sse2,nlohmann,623
Serialize numbers.json,clang x64/sse2,boost (pool),415
Serialize numbers.json,clang x64/sse2,boost,415
Serialize numbers.json,clang x64/sse2,rapidjson (pool),300
Serialize numbers.json,clang x64/sse2,rapidjson,297
Serialize numbers.json,clang x64/sse2,nlohmann,216
Serialize random.json,clang x64/sse2,boost (pool),1290
Serialize random.json,clang x64/sse2,boost,1173
Serialize random.json,clang x64/sse2,rapidjson (pool),838
Serialize random.json,clang x64/sse2,rapidjson,892
Serialize random.json,clang x64/sse2,nlohmann,338
Serialize twitter.json,clang x64/sse2,boost (pool),2271
Serialize twitter.json,clang x64/sse2,boost,1622
Serialize twitter.json,clang x64/sse2,rapidjson (pool),1364
Serialize twitter.json,clang x64/sse2,rapidjson,1527
Serialize twitter.json,clang x64/sse2,nlohmann,424
Serialize twitterescaped.json,clang x64/sse2,boost (pool),1961
Serialize twitterescaped.json,clang x64/sse2,boost,1388
Serialize twitterescaped.json,clang x64/sse2,rapidjson (pool),1184
Serialize twitterescaped.json,clang x64/sse2,rapidjson,1325
Serialize twitterescaped.json,clang x64/sse2,nlohmann,368
Serialize update-center.json,clang x64/sse2,boost (pool),1015
Serialize update-center.json,clang x64/sse2,boost,963
Serialize update-center.json,clang x64/sse2,rapidjson (pool),924
Serialize update-center.json,clang x64/sse2,rapidjson,1007
Serialize update-center.json,clang x64/sse2,nlohmann,270

Parse apache_builds.json,gcc x64/sse2,boost (pool),706
Parse apache_builds.json,gcc x64/sse2,boost,290
Parse apache_builds.json,gcc x64/sse2,rapidjson (pool),547
Parse apache_builds.json,gcc x64/sse2,rapidjson,356
Parse apache_builds.json,gcc x64/sse2,nlohmann,118
Parse canada.json,gcc x64/sse2,boost (pool),675
Parse canada.json,gcc x64/sse2,boost,395
Parse canada.json,gcc x64/sse2,rapidjson (pool),641
Parse canada.json,gcc x64/sse2,rapidjson,372
Parse canada.json,gcc x64/sse2,nlohmann,26
Parse citm_catalog.json,gcc x64/sse2,boost (pool),1096
Parse citm_catalog.json,gcc x64/sse2,boost,503
Parse citm_catalog.json,gcc x64/sse2,rapidjson (pool),1279
Parse citm_catalog.json,gcc x64/sse2,rapidjson,812
Parse citm_catalog.json,gcc x64/sse2,nlohmann,143
Parse github_events.json,gcc x64/sse2,boost (pool),767
Parse github_events.json,gcc x64/sse2,boost,327
Parse github_events.json,gcc x64/sse2,rapidjson (pool),551
Parse github_events.json,gcc x64/sse2,rapidjson,379
Parse github_events.json,gcc x64/sse2,nlohmann,121
Parse gsoc-2018.json,gcc x64/sse2,boost (pool),892
Parse gsoc-2018.json,gcc x64/sse2,boost,645
Parse gsoc-2018.json,gcc x64/sse2,rapidjson (pool),620
Parse gsoc-2018.json,gcc x64/sse2,rapidjson,523
Parse gsoc-2018.json,gcc x64/sse2,nlohmann,197
Parse instruments.json,gcc x64/sse2,boost (pool),608
Parse instruments.json,gcc x64/sse2,boost,296
Parse instruments.json,gcc x64/sse2,rapidjson (pool),723
Parse instruments.json,gcc x64/sse2,rapidjson,473
Parse instruments.json,gcc x64/sse2,nlohmann,112
Parse marine_ik.json,gcc x64/sse2,boost (pool),505
Parse marine_ik.json,gcc x64/sse2,boost,321
Parse marine_ik.json,gcc x64/sse2,rapidjson (pool),583
Parse marine_ik.json,gcc x64/sse2,rapidjson,411
Parse marine_ik.json,gcc x64/sse2,nlohmann,35
Parse mesh.json,gcc x64/sse2,boost (pool),551
Parse mesh.json,gcc x64/sse2,boost,518
Parse mesh.json,gcc x64/sse2,rapidjson (pool),491
Parse mesh.json,gcc x64/sse2,rapidjson,422
Parse mesh.json,gcc x64/sse2,nlohmann,32
Parse mesh.pretty.json,gcc x64/sse2,boost (pool),1091
Parse mesh.pretty.json,gcc x64/sse2,boost,1096
Parse mesh.pretty.json,gcc x64/sse2,rapidjson (pool),1023
Parse mesh.pretty.json,gcc x64/sse2,rapidjson,887
Parse mesh.pretty.json,gcc x64/sse2,nlohmann,61
Parse numbers.json,gcc x64/sse2,boost (pool),1088
Parse numbers.json,gcc x64/sse2,boost,968
Parse numbers.json,gcc x64/sse2,rapidjson (pool),633
Parse numbers.json,gcc x64/sse2,rapidjson,596
Parse numbers.json,gcc x64/sse2,nlohmann,25
Parse random.json,gcc x64/sse2,boost (pool),346
Parse random.json,gcc x64/sse2,boost,175
Parse random.json,gcc x64/sse2,rapidjson (pool),449
Parse random.json,gcc x64/sse2,rapidjson,308
Parse random.json,gcc x64/sse2,nlohmann,85
Parse twitter.json,gcc x64/sse2,boost (pool),597
Parse twitter.json,gcc x64/sse2,boost,308
Parse twitter.json,gcc x64/sse2,rapidjson (pool),630
Parse twitter.json,gcc x64/sse2,rapidjson,423
Parse twitter.json,gcc x64/sse2,nlohmann,123
Parse twitterescaped.json,gcc x64/sse2,boost (pool),533
Parse twitterescaped.json,gcc x64/sse2,boost,270
Parse twitterescaped.json,gcc x64/sse2,rapidjson (pool),475
Parse twitterescaped.json,gcc x64/sse2,rapidjson,333
Parse twitterescaped.json,gcc x64/sse2,nlohmann,108
Parse update-center.json,gcc x64/sse2,boost (pool),509
Parse update-center.json,gcc x64/sse2,boost,231
Parse update-center.json,gcc x64/sse2,rapidjson (pool),418
Parse update-center.json,gcc x64/sse2,rapidjson,282
Parse update-center.json,gcc x64/sse2,nlohmann,95
Serialize apache_builds.json,gcc x64/sse2,boost (pool),2102
Serialize apache_builds.json,gcc x64/sse2,boost,2029
Serialize apache_builds.json,gcc x64/sse2,rapidjson (pool),1424
Serialize apache_builds.json,gcc x64/sse2,rapidjson,1526
Serialize apache_builds.json,gcc x64/sse2,nlohmann,448
Serialize canada.json,gcc x64/sse2,boost (pool),563
Serialize canada.json,gcc x64/sse2,boost,541
Serialize canada.json,gcc x64/sse2,rapidjson (pool),335
Serialize canada.json,gcc x64/sse2,rapidjson,327
Serialize canada.json,gcc x64/sse2,nlohmann,156
Serialize citm_catalog.json,gcc x64/sse2,boost (pool),3474
Serialize citm_catalog.json,gcc x64/sse2,boost,3263
Serialize citm_catalog.json,gcc x64/sse2,rapidjson (pool),2453
Serialize citm_catalog.json,gcc x64/sse2,rapidjson,2469
Serialize citm_catalog.json,gcc x64/sse2,nlohmann,1204
Serialize github_events.json,gcc x64/sse2,boost (pool),2091
Serialize github_events.json,gcc x64/sse2,boost,2069
Serialize github_events.json,gcc x64/sse2,rapidjson (pool),1475
Serialize github_events.json,gcc x64/sse2,rapidjson,1658
Serialize github_events.json,gcc x64/sse2,nlohmann,413
Serialize gsoc-2018.json,gcc x64/sse2,boost (pool),2048
Serialize gsoc-2018.json,gcc x64/sse2,boost,1991
Serialize gsoc-2018.json,gcc x64/sse2,rapidjson (pool),2901
Serialize gsoc-2018.json,gcc x64/sse2,rapidjson,3073
Serialize gsoc-2018.json,gcc x64/sse2,nlohmann,365
Serialize instruments.json,gcc x64/sse2,boost (pool),2381
Serialize instruments.json,gcc x64/sse2,boost,2319
Serialize instruments.json,gcc x64/sse2,rapidjson (pool),1453
Serialize instruments.json,gcc x64/sse2,rapidjson,1514
Serialize instruments.json,gcc x64/sse2,nlohmann,613
Serialize marine_ik.json,gcc x64/sse2,boost (pool),469
Serialize marine_ik.json,gcc x64/sse2,boost,455
Serialize marine_ik.json,gcc x64/sse2,rapidjson (pool),504
Serialize marine_ik.json,gcc x64/sse2,rapidjson,494
Serialize marine_ik.json,gcc x64/sse2,nlohmann,235
Serialize mesh.json,gcc x64/sse2,boost (pool),476
Serialize mesh.json,gcc x64/sse2,boost,466
Serialize mesh.json,gcc x64/sse2,rapidjson (pool),415
Serialize mesh.json,gcc x64/sse2,rapidjson,413
Serialize mesh.json,gcc x64/sse2,nlohmann,278
Serialize mesh.pretty.json,gcc x64/sse2,boost (pool),1081
Serialize mesh.pretty.json,gcc x64/sse2,boost,1056
Serialize mesh.pretty.json,gcc x64/sse2,rapidjson (pool),950
Serialize mesh.pretty.json,gcc x64/sse2,rapidjson,945
Serialize mesh.pretty.json,gcc x64/sse2,nlohmann,624
Serialize numbers.json,gcc x64/sse2,boost (pool),418
Serialize numbers.json,gcc x64/sse2,boost,417
Serialize numbers.json,gcc x64/sse2,rapidjson (pool),322
Serialize numbers.json,gcc x64/sse2,rapidjson,321
Serialize numbers.json,gcc x64/sse2,nlohmann,240
Serialize random.json,gcc x64/sse2,boost (pool),1464
Serialize random.json,gcc x64/sse2,boost,1420
Serialize random.json,gcc x64/sse2,rapidjson (pool),850
Serialize random.json,gcc x64/sse2,rapidjson,922
Serialize random.json,gcc x64/sse2,nlohmann,351
Serialize twitter.json,gcc x64/sse2,boost (pool),2367
Serialize twitter.json,gcc x64/sse2,boost,2281
Serialize twitter.json,gcc x64/sse2,rapidjson (pool),1244
Serialize twitter.json,gcc x64/sse2,rapidjson,1401
Serialize twitter.json,gcc x64/sse2,nlohmann,447
Serialize twitterescaped.json,gcc x64/sse2,boost (pool),2053
Serialize twitterescaped.json,gcc x64/sse2,boost,1985
Serialize twitterescaped.json,gcc x64/sse2,rapidjson (pool),1077
Serialize twitterescaped.json,gcc x64/sse2,rapidjson,1216
Serialize twitterescaped.json,gcc x64/sse2,nlohmann,388
Serialize update-center.json,gcc x64/sse2,boost (pool),1350
Serialize update-center.json,gcc x64/sse2,boost,1298
Serialize update-center.json,gcc x64/sse2,rapidjson (pool),901
Serialize update-center.json,gcc x64/sse2,rapidjson,975
Serialize update-center.json,gcc x64/sse2,nlohmann,299

Parse apache_builds.json,msvc x64/sse2,boost (pool),616
Parse apache_builds.json,msvc x64/sse2,boost,277
Parse apache_builds.json,msvc x64/sse2,rapidjson (pool),385
Parse apache_builds.json,msvc x64/sse2,rapidjson,270
Parse apache_builds.json,msvc x64/sse2,nlohmann,121
Parse canada.json,msvc x64/sse2,boost (pool),637
Parse canada.json,msvc x64/sse2,boost,369
Parse canada.json,msvc x64/sse2,rapidjson (pool),490
Parse canada.json,msvc x64/sse2,rapidjson,312
Parse canada.json,msvc x64/sse2,nlohmann,52
Parse citm_catalog.json,msvc x64/sse2,boost (pool),999
Parse citm_catalog.json,msvc x64/sse2,boost,477
Parse citm_catalog.json,msvc x64/sse2,rapidjson (pool),978
Parse citm_catalog.json,msvc x64/sse2,rapidjson,659
Parse citm_catalog.json,msvc x64/sse2,nlohmann,148
Parse github_events.json,msvc x64/sse2,boost (pool),713
Parse github_events.json,msvc x64/sse2,boost,318
Parse github_events.json,msvc x64/sse2,rapidjson (pool),356
Parse github_events.json,msvc x64/sse2,rapidjson,278
Parse github_events.json,msvc x64/sse2,nlohmann,134
Parse gsoc-2018.json,msvc x64/sse2,boost (pool),881
Parse gsoc-2018.json,msvc x64/sse2,boost,628
Parse gsoc-2018.json,msvc x64/sse2,rapidjson (pool),375
Parse gsoc-2018.json,msvc x64/sse2,rapidjson,336
Parse gsoc-2018.json,msvc x64/sse2,nlohmann,243
Parse instruments.json,msvc x64/sse2,boost (pool),562
Parse instruments.json,msvc x64/sse2,boost,286
Parse instruments.json,msvc x64/sse2,rapidjson (pool),481
Parse instruments.json,msvc x64/sse2,rapidjson,349
Parse instruments.json,msvc x64/sse2,nlohmann,112
Parse marine_ik.json,msvc x64/sse2,boost (pool),448
Parse marine_ik.json,msvc x64/sse2,boost,298
Parse marine_ik.json,msvc x64/sse2,rapidjson (pool),482
Parse marine_ik.json,msvc x64/sse2,rapidjson,350
Parse marine_ik.json,msvc x64/sse2,nlohmann,56
Parse mesh.json,msvc x64/sse2,boost (pool),536
Parse mesh.json,msvc x64/sse2,boost,535
Parse mesh.json,msvc x64/sse2,rapidjson (pool),400
Parse mesh.json,msvc x64/sse2,rapidjson,347
Parse mesh.json,msvc x64/sse2,nlohmann,57
Parse mesh.pretty.json,msvc x64/sse2,boost (pool),1057
Parse mesh.pretty.json,msvc x64/sse2,boost,1132
Parse mesh.pretty.json,msvc x64/sse2,rapidjson (pool),813
Parse mesh.pretty.json,msvc x64/sse2,rapidjson,717
Parse mesh.pretty.json,msvc x64/sse2,nlohmann,112
Parse numbers.json,msvc x64/sse2,boost (pool),981
Parse numbers.json,msvc x64/sse2,boost,895
Parse numbers.json,msvc x64/sse2,rapidjson (pool),465
Parse numbers.json,msvc x64/sse2,rapidjson,443
Parse numbers.json,msvc x64/sse2,nlohmann,62
Parse random.json,msvc x64/sse2,boost (pool),324
Parse random.json,msvc x64/sse2,boost,171
Parse random.json,msvc x64/sse2,rapidjson (pool),297
Parse random.json,msvc x64/sse2,rapidjson,222
Parse random.json,msvc x64/sse2,nlohmann,82
Parse twitter.json,msvc x64/sse2,boost (pool),548
Parse twitter.json,msvc x64/sse2,boost,307
Parse twitter.json,msvc x64/sse2,rapidjson (pool),394
Parse twitter.json,msvc x64/sse2,rapidjson,299
Parse twitter.json,msvc x64/sse2,nlohmann,130
Parse twitterescaped.json,msvc x64/sse2,boost (pool),467
Parse twitterescaped.json,msvc x64/sse2,boost,264
Parse twitterescaped.json,msvc x64/sse2,rapidjson (pool),284
Parse twitterescaped.json,msvc x64/sse2,rapidjson,222
Parse twitterescaped.json,msvc x64/sse2,nlohmann,112
Parse update-center.json,msvc x64/sse2,boost (pool),446
Parse update-center.json,msvc x64/sse2,boost,223
Parse update-center.json,msvc x64/sse2,rapidjson (pool),278
Parse update-center.json,msvc x64/sse2,rapidjson,206
Parse update-center.json,msvc x64/sse2,nlohmann,99
Serialize apache_builds.json,msvc x64/sse2,boost (pool),1446
Serialize apache_builds.json,msvc x64/sse2,boost,1389
Serialize apache_builds.json,msvc x64/sse2,rapidjson (pool),1286
Serialize apache_builds.json,msvc x64/sse2,rapidjson,1368
Serialize apache_builds.json,msvc x64/sse2,nlohmann,346
Serialize canada.json,msvc x64/sse2,boost (pool),473
Serialize canada.json,msvc x64/sse2,boost,460
Serialize canada.json,msvc x64/sse2,rapidjson (pool),305
Serialize canada.json,msvc x64/sse2,rapidjson,300
Serialize canada.json,msvc x64/sse2,nlohmann,141
Serialize citm_catalog.json,msvc x64/sse2,boost (pool),2182
Serialize citm_catalog.json,msvc x64/sse2,boost,2128
Serialize citm_catalog.json,msvc x64/sse2,rapidjson (pool),2116
Serialize citm_catalog.json,msvc x64/sse2,rapidjson,2135
Serialize citm_catalog.json,msvc x64/sse2,nlohmann,1142
Serialize github_events.json,msvc x64/sse2,boost (pool),1541
Serialize github_events.json,msvc x64/sse2,boost,1501
Serialize github_events.json,msvc x64/sse2,rapidjson (pool),1336
Serialize github_events.json,msvc x64/sse2,rapidjson,1459
Serialize github_events.json,msvc x64/sse2,nlohmann,291
Serialize gsoc-2018.json,msvc x64/sse2,boost (pool),1726
Serialize gsoc-2018.json,msvc x64/sse2,boost,1666
Serialize gsoc-2018.json,msvc x64/sse2,rapidjson (pool),2679
Serialize gsoc-2018.json,msvc x64/sse2,rapidjson,2821
Serialize gsoc-2018.json,msvc x64/sse2,nlohmann,206
Serialize instruments.json,msvc x64/sse2,boost (pool),1442
Serialize instruments.json,msvc x64/sse2,boost,1409
Serialize instruments.json,msvc x64/sse2,rapidjson (pool),1239
Serialize instruments.json,msvc x64/sse2,rapidjson,1317
Serialize instruments.json,msvc x64/sse2,nlohmann,550
Serialize marine_ik.json,msvc x64/sse2,boost (pool),397
Serialize marine_ik.json,msvc x64/sse2,boost,385
Serialize marine_ik.json,msvc x64/sse2,rapidjson (pool),425
Serialize marine_ik.json,msvc x64/sse2,rapidjson,419
Serialize marine_ik.json,msvc x64/sse2,nlohmann,179
Serialize mesh.json,msvc x64/sse2,boost (pool),401
Serialize mesh.json,msvc x64/sse2,boost,401
Serialize mesh.json,msvc x64/sse2,rapidjson (pool),342
Serialize mesh.json,msvc x64/sse2,rapidjson,341
Serialize mesh.json,msvc x64/sse2,nlohmann,212
Serialize mesh.pretty.json,msvc x64/sse2,boost (pool),918
Serialize mesh.pretty.json,msvc x64/sse2,boost,918
Serialize mesh.pretty.json,msvc x64/sse2,rapidjson (pool),782
Serialize mesh.pretty.json,msvc x64/sse2,rapidjson,779
Serialize mesh.pretty.json,msvc x64/sse2,nlohmann,481
Serialize numbers.json,msvc x64/sse2,boost (pool),359
Serialize numbers.json,msvc x64/sse2,boost,353
Serialize numbers.json,msvc x64/sse2,rapidjson (pool),268
Serialize numbers.json,msvc x64/sse2,rapidjson,268
Serialize numbers.json,msvc x64/sse2,nlohmann,165
Serialize random.json,msvc x64/sse2,boost (pool),887
Serialize random.json,msvc x64/sse2,boost,865
Serialize random.json,msvc x64/sse2,rapidjson (pool),761
Serialize random.json,msvc x64/sse2,rapidjson,813
Serialize random.json,msvc x64/sse2,nlohmann,308
Serialize twitter.json,msvc x64/sse2,boost (pool),1612
Serialize twitter.json,msvc x64/sse2,boost,1556
Serialize twitter.json,msvc x64/sse2,rapidjson (pool),1217
Serialize twitter.json,msvc x64/sse2,rapidjson,1341
Serialize twitter.json,msvc x64/sse2,nlohmann,393
Serialize twitterescaped.json,msvc x64/sse2,boost (pool),1400
Serialize twitterescaped.json,msvc x64/sse2,boost,1351
Serialize twitterescaped.json,msvc x64/sse2,rapidjson (pool),1057
Serialize twitterescaped.json,msvc x64/sse2,rapidjson,1163
Serialize twitterescaped.json,msvc x64/sse2,nlohmann,341
Serialize update-center.json,msvc x64/sse2,boost (pool),969
Serialize update-center.json,msvc x64/sse2,boost,941
Serialize update-center.json,msvc x64/sse2,rapidjson (pool),795
Serialize update-center.json,msvc x64/sse2,rapidjson,864
Serialize update-center.json,msvc x64/sse2,nlohmann,224


</textarea>

<script>

var Width = 600;

function autosize (f) {
  if (f.scrollHeight > f.clientHeight) {
    f.style.height = f.scrollHeight + "px";
  }
}

// Draw a single bar chart representing
// results for one platform and architecture
function draw_chart(ctx, title, rows, mbsMax) {
    var xMax = Math.max(...Object.values(rows));

    // gray separator
    ctx.beginPath();
    ctx.strokeStyle = "#A0A0A0";
    ctx.moveTo(0, 0.5);
    ctx.lineTo(Width, 0.5);
    ctx.stroke();
    ctx.translate(0, 28);

    // title
    ctx.textAlign = "left";
    ctx.fillStyle = "#000000";
    ctx.font = 'bold 16px sans-serif';
    ctx.fillText(title, 0, 0);
    ctx.translate(0, 26);

    // chart rows
    Object.entries(rows).forEach(([name, mbs]) =>
    {
        var dy = 4;

        ctx.textAlign = "left";
        ctx.fillStyle = "#000000";
        ctx.font = '14px sans-serif';
        ctx.fillText(name, 0, 0);

        var xMbs = 195;
        if(name.startsWith("boost"))
            ctx.fillStyle = "#eb342a";
        else
            ctx.fillStyle = "#909090";
        var w = (Width - 170) * mbs / mbsMax
        if(w < xMbs - 120)
            w = xMbs - 120;
        ctx.fillRect(130, -20+dy, w, 20);

        ctx.textAlign = "right";
        ctx.font = '13px sans-serif';
        ctx.fillStyle = "#000000";
        ctx.fillText(mbs + " MB/s", xMbs + 1, 1);
        ctx.fillStyle = "#ffffff";
        ctx.fillText(mbs + " MB/s", xMbs, 0);

        ctx.translate(0, 24);
    });

    // gray separator
    ctx.translate(0, -4);
    ctx.beginPath();
    ctx.strokeStyle = "#A0A0A0";
    ctx.moveTo(0, 0.5);
    ctx.lineTo(Width, 0.5);
    ctx.stroke();
}

// Draw multiple bar charts, one
// for each platform and architecture
function draw_charts(ctx, tab, mbsMax) {
    // top margin
    ctx.translate(0, 16);

    // draw each chart
    Object.entries(tab).forEach(([name, rows]) =>
    {
        draw_chart(ctx, name, rows, mbsMax);
    });

    // bottom margin
    ctx.translate(0, 16);
}

function measure_and_draw(canvas, tab) {
    mbsMax = 0;
    Object.entries(tab).forEach(([name, rows]) =>
    {
        mbsMax = Math.max(mbsMax, ...Object.values(rows));
    });

    var LeftMargin = 48;

    // Measure the height needed
    canvas.width = Width;
    canvas.height = 30000;
    var ctx = canvas.getContext("2d");
    ctx.save();
    draw_charts(ctx, tab);
    var tx = ctx.getTransform();
    var height = tx["f"];

    // Resize the canvas to fit
    canvas.width = LeftMargin + Width + 20;
    canvas.height = height;

    // Make everything opaque
    ctx.fillStyle = "#FFFFFF";
    ctx.fillRect(0, 0, canvas.width, canvas.height);
    ctx.translate(LeftMargin, 0);
    draw_charts(ctx, tab, mbsMax);
    ctx.restore();
}

function update()
{
    var tab = new Object();
    var lines = data.value.split('\n');
    for (var i = 0; i < lines.length; i++)
    {
        if(lines[i].length == 0)
            continue;
        items = lines[i].split(',');
        var title = items[0]
        var target = items[1];
        var name = items[2];
        var mbs = items[3];
        if(! (title in tab))
            tab[title] = new Object();
        if(! (target in tab[title]))
            tab[title][target] = new Object();
        var set = tab[title][target];
        if(! (name in set))
            set[name] = new Object();           
        set[name] = mbs;
    }

    benchmarks.innerHTML = "";
    Object.entries(tab).forEach(([title, charts]) =>
    {
        benchmarks.innerHTML +=
            "<h2>" + title + "</h2>" +
            "<canvas id=\"" + title + "\" width=\"800\" height=\"600\">";
    });
    Object.entries(tab).forEach(([title, charts]) =>
    {
        measure_and_draw(document.getElementById(title), charts)
    });
}

data.oninput = function()
{
    update();
}

update();

</script>
</body>
</html>
